package com.xxx.service.user;

import com.xxx.common.model.PageInfo;
import com.xxx.common.table.UserBaseInfoEntity;
import com.xxx.model.user.req.ReqGetUserDetailsVO;
import com.xxx.model.user.req.ReqLoginVo;
import com.xxx.model.user.req.ReqUpdateUserInfoVO;
import com.xxx.model.user.req.ReqUserListVO;
import com.xxx.model.user.res.ResGetUserDetailsVO;
import com.xxx.model.user.res.ResLoginVo;
import com.xxx.model.user.res.ResUserListVO;

/**
 * @author Flying
 * @Description
 * @date 14:41 2018-08-24
 **/
public interface UserService {
    /**
     * 用户登陆
     * @param reqLoginVo
     * @return
     */
    ResLoginVo login(ReqLoginVo reqLoginVo);


    /**
     * 获取用户信息
     * @param userId
     * @return
     */
    public ResLoginVo getUserInfo(Long userId);

    /**
     * 获取用户信息
     * @param phone
     * @return
     */
    ResLoginVo getUserInfo(String phone);

    /**
     * description:修改用户信息
     * @author: Flying
     * @date: 2018-08-27 18:48
     * @param: null
     * @return
     */
    Integer updateUserInfo(ReqUpdateUserInfoVO reqUpdateUserInfoVO);

    /**
     * description:创建用户
     * @author: Flying
     * @date: 2018-08-30 13:40
     * @param: null
     * @return
     */
    UserBaseInfoEntity createUser(UserBaseInfoEntity userBaseInfoEntity);

    /**
     * @Author Flying
     * @Description  获取用户列表
     * @Date 14:19 2019/4/11
     * @Param [reqUserListVO]
     * @return com.xxx.common.model.PageInfo<com.xxx.model.operation.res.ResUserListVO>
     **/
    PageInfo<ResUserListVO> getUserList(ReqUserListVO reqUserListVO);

    /**
     * @Author Flying
     * @Description  获取用户详情
     * @Date 16:12 2019/4/11
     * @Param [reqGetUserDetailsVO]
     * @return com.xxx.model.operation.res.ResGetUserDetailsVO
     **/
    ResGetUserDetailsVO getUserDetails(ReqGetUserDetailsVO reqGetUserDetailsVO);
}
